package com.prd.dto;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.flowable.spring.security.UserDto;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * <p>
 * 员工数据表
 * </p>
 *
 * @author lizhaoyi
 * @since 2023-12-12
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("员工数据对象")
public class OaEmployeeDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @ApiModelProperty("主键id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 员工姓名
     */
    @ApiModelProperty("员工姓名")
    private String name;

    /**
     * 电话号码
     */
    @ApiModelProperty("电话号码")
    private String telephone;

    /**
     * 邮箱
     */
    @ApiModelProperty("邮箱")
    private String email;

    /**
     * 部门
     */
    @ApiModelProperty("部门")
    private String dept;

    /**
     * 职务
     */
    @ApiModelProperty("职务")
    private String position;

    /**
     * 职位
     */
    @ApiModelProperty("职位")
    private String post;

    /**
     * 入职时间
     */
    @ApiModelProperty("入职时间")
    private Date entryTime;

    /**
     * 身份类型
     */
    @ApiModelProperty("身份类型")
    private Integer identityType;

    /**
     * 试用期
     */
    @ApiModelProperty("试用期")
    private String trialTime;

    /**
     * 入职说明
     */
    @ApiModelProperty("入职说明")
    private String oaExplain;

    /**
     * 联系人
     */
    @ApiModelProperty("联系人")
    private String contactor;

    /**
     * 联系人电话
     */
    @ApiModelProperty("联系人电话")
    private String contactorPhone;

    /**
     * 制单人
     */
    @ApiModelProperty("制单人")
    private String creator;

    /**
     * 制单人操作时间
     */
    @ApiModelProperty("制单人操作时间")
    private Date creatorOpTimie;

    /**
     * 审核人
     */
    @ApiModelProperty("审核人")
    private String reviewer;

    /**
     * 批准人
     */
    @ApiModelProperty("批准人")
    private String approver;

    /**
     * 批准操作时间
     */
    @ApiModelProperty("批准操作时间")
    private String approverTime;

    /**
     * 抄送
     */
    @ApiModelProperty("抄送")
    private String ccList;

    /**
     * 状态0-已录用，1-待入职，2-在职，3-已离职
     */
    @ApiModelProperty("状态0-已录用，1-待入职，2-在职，3-已离职")
    private Integer status;

    /**
     * 已录用状态0-待审批，1-审批不通过，2-待确认，3-已拒绝
     */
    @ApiModelProperty("已录用状态0-待审批，1-审批不通过，2-待确认，3-已拒绝")
    private Integer employedStatus;

    /**
     * 待入职状态0-办理中，1-已办结，2-已退回，3-已撤销
     */
    @ApiModelProperty("待入职状态0-办理中，1-已办结，2-已退回，3-已撤销")
    private Integer toBeEmployedStatus;

    /**
     * 在职状态0-在职，1-试用/管培期，2-等待离职
     */
    @ApiModelProperty("在职状态0-在职，1-试用/管培期，2-等待离职")
    private Integer atPostStatus;

    /**
     * 入职天数
     */
    @ApiModelProperty("入职天数")
    private Integer entryDays;

    /**
     * 期限
     */
    @ApiModelProperty("期限")
    private String term;

    /**
     * 离职方式
     */
    @ApiModelProperty("离职方式")
    private Integer depart;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private LocalDateTime createdTime;

    /**
     * 创建人id
     */
    @ApiModelProperty("创建人id")
    private Long createdId;

    /**
     * 创建人名称
     */
    @ApiModelProperty("创建人名称")
    private String createdName;


    /**
     * 试用期周报
     */
    @ApiModelProperty("试用期周报")
    private String trialTimeWeekReportIds;

    /**
     * 出勤/行程
     */
    @ApiModelProperty("出勤/行程")
    private String tripIds;

    /**
     * 奖惩
     */
    @ApiModelProperty("奖惩")
    private String rewardsAndPunishments;

    /**
     * 入职承诺书
     */
    @ApiModelProperty("入职承诺书")
    private String employmentCommitmentLetterId;

    /**
     * 竞业协议
     */
    @ApiModelProperty("竞业协议")
    private String nonCompeteAgreementId;

    /**
     * 保密协议
     */
    @ApiModelProperty("保密协议")
    private String confidentialityAgreementId;

    /**
     * 合同到期/法定退休
     */
    @ApiModelProperty("合同到期/法定退休")
    private String exprie;


}
